package com.yeban.javase.day18.test.test01;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/11/2
 *
 * 需求：
 * 线程1要执行打印：A和C，线程2要执行打印：B，
 * 但线程1在打印A后，要线程2打印B之后才能打印C，
 * 所以：线程1在打印A后，必须等待线程2打印完B之后才能继续执行。
 *
 * 多线程的情况下 C -> B -> A
 * join()
 */
public class Join1CBA {

    public static void main(String[] args) {

        // 线程2：打印B
        Thread tB = new Thread(() -> {
            System.out.println("B");
        });

        // 线程1：打印A和C
        Thread tCA = new Thread(() -> {
            System.out.println("C");
            try {
                tB.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("A");
        });

        tCA.start();
        /*// 死锁
        try {
            // 主线程等待tCA执行完
            tCA.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }*/
        tB.start();
    }
}
